import pluginVue from 'eslint-plugin-vue'

export default [
  {
    name: 'app/files-to-lint',
    files: [ '**/*.[vue, js]' ]
  },

  {
    name: 'app/files-to-ignore',
    ignores: [ '**/dist/**' ]
  },

  ...pluginVue.configs['flat/essential'],

  {
    rules: {
      semi: [ 'error', 'never' ], // 强制每个语句末尾必须有分号
      quotes: [ 'error', 'single' ], // 强制字符串使用单引号
      // 控制最后一个属性后面是否使用逗号
      'comma-dangle': [ 'error', {
        arrays: 'never',
        objects: 'never',
        imports: 'never',
        exports: 'never',
        functions: 'never'
      } ],
      'key-spacing': [ 'error', {
        afterColon: true,  // 键之后需要空格
        mode: 'minimum'   // 最小化间隔
      } ],
      'object-curly-spacing': [ 'error', 'always' ], // 对象大括号内需要空格
      'array-bracket-spacing': [ 'error', 'always' ], // 数组大括号内需要空格
      'eol-last': [ 'error', 'always' ], // 强制在文件末尾保留空行
      'no-multiple-empty-lines': [ 'error', { max: 1 } ], // 最大允许 1 个空行
      'camelcase': [ 'error', { properties: 'always' } ], // 强制变量小驼峰命名(包括对象属性)
      'no-unused-vars': [ 'error', { args: 'none' } ], // 禁用未使用的变量
      'no-empty-function': [ 'error', { allow: [ 'arrowFunctions' ] } ] // 禁止空的函数,但允许箭头函数为空
    }
  }
]
